/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.una.informatica.core;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import py.una.informatica.dto.Respuesta;
import py.una.informatica.entidades.*;
import py.una.informatica.facades.*;

/**
 *
 * @author Destefano
 */
@Stateless
@LocalBean
public class Emergencia {

    @EJB
    AdministradorFacade administradorFacade;
    @EJB
    PacienteFacade pacienteFacade;
    @EJB
    DoctorFacade doctorFacade;
    @EJB
    CiudadesFacade ciudadesFacade;
    @EJB
    DiagnosticoFacade diagnosticoFacade;
    @EJB
    EspecialidadFacade especialidadFacade;
    @EJB
    DiagnosticoPacienteFacade diagnosticoPacienteFacade;
    @EJB
    EspecialidadDoctorFacade especialidadDoctorFacade;
    @EJB
    GenerosFacade generosFacade;
    @EJB
    HistorialFacade historialFacade;
    @EJB
    MedicionesFacade medicionesFacade;
    @EJB
    PaisesFacade paisesFacade;
    @EJB
    ParametrosFacade parametrosFacade;
    @EJB
    ReglasFacade reglasFacade;
    @EJB
    SignosComparacionFacade signosComparacionFacade;
    @EJB
    UnidadesFacade unidadesFacade;

    //    //////////////////CIUDAD///////////////////////
    public void getAutenticacion(Integer cedula, String pass) {
        try {

            /*
             * Permisos:
             * ningun permiso = vacio
             * 
             * administrador = 1
             * paciente = 2
             * doctor = 3
             * 
             * administrador - paciente = 12 
             * administrador - doctor = 13
             * 
             * administrador - paciente - doctor = 123
             * 
             * paciente - doctor = 23
             * 
             */

            String respuesta = "";
            
            Administrador a = this.getAdministradoresByCedula(cedula);
            Paciente p = this.getPacienteByCedula(cedula);
            Doctor d = this.getDoctorByCedula(cedula);
            
            if(a != null){
                if(a.getContrasenha().equals(pass)){
                    respuesta = "1";
                }
            }

            if(p != null){
                if(p.getContrasenha().equals(pass)){
                    respuesta = respuesta + "2";
                }
            }

            if(d != null){
                if(d.getContrasenha().equals(pass)){
                   respuesta = respuesta + "3";
                }
            }

            System.out.println("-------------------------------");
            System.out.println("el permiso final es:" +respuesta);
            System.out.println("-------------------------------");
            

        } catch (Exception e) {

            e.printStackTrace();

        }
    }

    //    //////////////////ADMINISTRADOR///////////////////////
    public List<Administrador> getTodosLosAdministradores() {
        try {
            List<Administrador> list_a = administradorFacade.findAll();
            return list_a;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Administrador getAdministradoresById(Long idAdministrador) {
        try {
            Administrador a = administradorFacade.getAdministradorById(idAdministrador);
            return a;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Administrador getAdministradoresByCedula(Integer cedula) {
        try {
            Administrador a = administradorFacade.getAdministradorByCedula(cedula);
            return a;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }
    //    //////////////////CIUDAD///////////////////////

    public List<Ciudades> getTodasLasCiudades() {
        try {
            List<Ciudades> list_c = ciudadesFacade.findAll();
            return list_c;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Ciudades getCiudadesById(Long idCiudad) {
        Ciudades c = null;
        try {
            c = ciudadesFacade.getCiudadesById(idCiudad);
            return c;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //////////////////GENERO//////////////////////
    public List<Generos> getTodasLosGeneros() {
        try {
            List<Generos> list_g = generosFacade.findAll();
            return list_g;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Generos getGeneroById(Long idGenero) {
        Generos g = null;
        try {
            g = generosFacade.getGeneroById(idGenero);
            return g;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //    //////////////////DIAGNOSTICO///////////////////////
    public List<Diagnostico> getTodasLosDiagnosticos() {
        try {
            List<Diagnostico> list_d = diagnosticoFacade.findAll();
            return list_d;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Diagnostico getDiagnosticoById(Long idDiagnostico) {
        Diagnostico d = null;
        try {
            d = diagnosticoFacade.getDiagnosticoById(idDiagnostico);
            return d;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    //    //////////////////ESPECIALIDAD///////////////////////
    public List<Especialidad> getTodasLasEspecialidades() {
        try {
            List<Especialidad> list_d = especialidadFacade.findAll();
            return list_d;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Especialidad getEspecialidadById(Long idEspecialidad) {
        Especialidad es = null;
        try {
            es = especialidadFacade.getDiagnosticoById(idEspecialidad);
            return es;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

////////////////////////Pacientes//////////////////////////    
    public List<Paciente> getTodosLosPacientes() {
        try {
            List<Paciente> list_p = pacienteFacade.findAll();
            return list_p;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Paciente getPacienteById(Long idPaciente) {
        Paciente p = null;
        try {
            p = pacienteFacade.getPacienteById(idPaciente);
            return p;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public Paciente getPacienteByCedula(Integer cedula) {
        Paciente p = null;
        try {
            p = pacienteFacade.getPacienteByCedula(cedula);
            return p;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void crearPaciente(Paciente p) {
        try {
            pacienteFacade.create(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editarPaciente(Paciente p) {
        try {
            pacienteFacade.edit(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void eliminarPaciente(Paciente p) {
        try {
            pacienteFacade.remove(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

////////////////////////DOCTORES//////////////////////////    
    public List<Doctor> getTodasLosDoctores() {
        try {
            List<Doctor> list_d = doctorFacade.findAll();
            return list_d;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Doctor getDoctorById(Long idDoctor) {
        Doctor d = null;
        try {
            d = doctorFacade.getDoctorById(idDoctor);
            return d;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public Doctor getDoctorByCedula(Integer cedula) {
        Doctor d = null;
        try {
            d = doctorFacade.getDoctorByCedula(cedula);
            return d;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void crearDoctor(Doctor d) {
        try {
            doctorFacade.create(d);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void editarDoctor(Doctor d) {
        try {
            doctorFacade.edit(d);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void eliminarDoctor(Doctor d) {
        try {
            doctorFacade.remove(d);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

//    //////////////////ASOCIACIONES///////////////////////
    public List<DiagnosticoPaciente> getTodosDiagnosticoPaciente() {
        try {
            List<DiagnosticoPaciente> dp = diagnosticoPacienteFacade.findAll();
            return dp;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public DiagnosticoPaciente getDiagnosticoPacienteById(Long idPaciente) {
        try {
            DiagnosticoPaciente dp = diagnosticoPacienteFacade.getDiagnosticoPacienteById(idPaciente);
            return dp;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public List<EspecialidadDoctor> getTodosEspecialidadDoctor() {
        try {
            List<EspecialidadDoctor> ed = especialidadDoctorFacade.findAll();
            return ed;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public EspecialidadDoctor getEspecialidadDoctorById(Long idEd) {
        try {
            EspecialidadDoctor dp = especialidadDoctorFacade.getEspecialidadDoctorById(idEd);
            return dp;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void asociarDiagnosticoAPaciente(Diagnostico d, Paciente p) {

        DiagnosticoPaciente dp = new DiagnosticoPaciente(7L);

        try {
            dp.setIdPaciente(p);
            dp.setIdDiagnostico(d);

            diagnosticoPacienteFacade.create(dp);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void asociarEspecialidadADoctor(Especialidad es, Doctor d) {

        EspecialidadDoctor dp = new EspecialidadDoctor(7L);

        try {
            dp.setIdDoctor(d);
            dp.setIdEspecialidad(es);

            especialidadDoctorFacade.create(dp);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    ////////////////////////PARAMETROS//////////////////////////    
    public List<Parametros> getTodasLosParametros() {
        try {
            List<Parametros> list_p = parametrosFacade.findAll();
            return list_p;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Parametros getParametrosById(Long idParametros) {
        Parametros d = null;
        try {
            d = parametrosFacade.getParametrosById(idParametros);
            return d;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    ////////////////////////MEDICIONES//////////////////////////    
    public List<Mediciones> getTodasLasMediciones() {
        try {
            List<Mediciones> list_m = medicionesFacade.findAll();
            return list_m;

        } catch (Exception e) {

            e.printStackTrace();
            return null;

        }
    }

    public Mediciones getMedicionesById(Long idMediciones) {
        Mediciones m = null;
        try {
            m = medicionesFacade.getMedicionById(idMediciones);
            return m;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void crearMedicion(Mediciones m) {
        try {
            medicionesFacade.create(m);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    ////////////SIGNO COMPARACION//////////////
    public SignosComparacion getSignoComparacionById(Long idSignoComparacion) {
        SignosComparacion sc = null;
        try {
            sc = signosComparacionFacade.getSignosComparacionById(idSignoComparacion);
            return sc;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /////////////////REGLA/////////////////////
    public Reglas getReglaById(Long idRegla) {
        Reglas r = null;
        try {
            r = reglasFacade.getReglaById(idRegla);
            return r;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void crearRegla(Reglas r) {
        try {
            reglasFacade.create(r);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /////////////////HISTORIAL/////////////////////
    public void crearHistorial(Historial h) {
        try {
            historialFacade.create(h);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
